mscJNeuralNet.netPerformanceStatistics
Class NetPerformanceReporter
java.lang.Object
mscJNeuralNet.netPerformanceStatistics.NetPerformanceReporter
- public class NetPerformanceReporter
- extends java.lang.Object
Diese Klasse dient der Erzeugung eines Berichtes über die berechneten
Ist-Soll Fehlerwerte eines Netzes.
Außerdem steht eine Methode zur Verfügung, um ein Netz mehrfach von Grund auf
zu trainieren, um Statistiken über die Performanz der gewählten Parameter
des Netzes und des Lernverfahrens zu ermitteln.
Beispiel zum Testen der verschiedenen Lernverfahren und ihrer Performanz auf dem
dreidimensionalen Xor-Problem. Es wird mit jedem Lernverfahren jeweils hundert mal
trainiert, wobei vor jedem Training die Kantengewichte erneut initialisiert werden.
Bei jedem Durchgang wird entweder bis zu einem avg. SSE Wert von 0.01 oder bis
50 Lernschritte absolviert wurden trainiert.
// Lerndatensätze erzeugen
double [][] trippleXORtrainInput = {
{-1,-1,-1}, {-1,-1,1},
{-1,1,-1}, {-1,1,1},
{1,-1,-1}, {1,-1,1},
{1,1,-1}, {1,1,1}};
double [][] trippleXORtrainOutput = {
{-1},{1},
{1},{-1},
{1}, {-1},
{-1}, {1}};
// Netzstruktur festlegen
int [] layerSizesTrippleXOr = {3, 3, 1};
// Parameter für das Lernverfahren BackpropagationMomentum
// alpha, momentum
double [] momentum_1_bpg = {0.3, 0.4}; // best performance on tripplexor
// Parameter für das Lernverfahren SuperSABMomentum
// momentum, alphaplus, alphaminus, alphainit
double [] momentum_1_ssab = {0.0};
// Parameter für das Lernverfahren QuickProp
// alpha, max growth rate
double [] momentum_1_qprop = {0.3};
// Das zu traininerende Netz
Net lTrippleXorNet = new Net(layerSizesTrippleXOr);
// Die verschiedenen Lernverfahren
INetTrainingAlgorithm lAlgoBpgMom = new BackpropagationMomentum();
INetTrainingAlgorithm lAlgoSSAB = new SuperSABMomentum();
INetTrainingAlgorithm lAlgoRProp = new RProp();
INetTrainingAlgorithm lAlgoQProp = new QuickProp();
// Kantengewichtsinitialisierer
INetConnector lSymmNetConnector = new RandomSymmetryBreakingNetConnector();
try{
// Parameter für Bpg festlegen
lAlgoBpgMom.setLearningParameters(momentum_1_bpg);
// Bpg hundert mal mit jeweils maximal 50 Lernschritten trainieren
NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoBpgMom, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
// Parameter für SuperSAB festlegen
lAlgoSSAB.setLearningParameters(momentum_1_ssab);
// SuperSAB hundert mal mit jeweils maximal 50 Lernschritten trainieren
NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoSSAB, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
// RProp hundert mal mit jeweils maximal 50 Lernschritten trainieren
NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoRProp, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
// Parameter für QProp festlegen
lAlgoQProp.setLearningParameters(momentum_1_qprop);
// QProp hundert mal mit jeweils maximal 50 Lernschritten trainieren
NetPerformanceReporter.getQualityReport(lTrippleXorNet, lAlgoQProp, trippleXORtrainInput, trippleXORtrainOutput, 50, 100, null, lSymmNetConnector);
}
catch (Exception e){
e.printStackTrace();
}
Created on 31.05.2004
- Version:
- 13.06.2004
- Author:
- M. Serhat Cinar
- See Also:
NetPerformanceStatistics
,
NetPerformanceStatisticsCalculator
,
mscJNeuralNet.netPerformanceStatistics
Method Summary |
static java.lang.String |
getNetPerformance(NetPerformanceStatistics pNetStat,
int pLearningCycle)
Generiert einen Bericht über die Performanz eines Netzes.
|
static void |
getQualityReport(Net pNet,
INetTrainingAlgorithm pAlgo,
double[][] pInputPattern,
double[][] pOutputPattern,
int pRoundsToTest,
int pMaxCycles,
double[] pConnectorParameters,
INetConnector pNetConnectionAlgo)
Ein Netz wird mehrfach von Grund auf trainiert, um Statistiken über
die Performanz der gewählten Parameter des Netzes und des Lernverfahrens zu ermitteln.
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
NetPerformanceReporter
public NetPerformanceReporter()
getQualityReport
public static void getQualityReport(Net pNet,
INetTrainingAlgorithm pAlgo,
double[][] pInputPattern,
double[][] pOutputPattern,
int pRoundsToTest,
int pMaxCycles,
double[] pConnectorParameters,
INetConnector pNetConnectionAlgo)
throws PatternDoesNotMatchNetException
- Ein Netz wird mehrfach von Grund auf trainiert, um Statistiken über
die Performanz der gewählten Parameter des Netzes und des Lernverfahrens zu ermitteln.
Es wird mit dem gegebenen Lernverfahren jeweils die angegebene Anzahle mal
trainiert, wobei vor jedem Training die Kantengewichte mit dem Konnektor erneut
initialisiert werden.
Bei jedem Durchgang wird entweder bis zu einem avg. SSE Wert von 0.01 oder bis
die angegebene Anzahl der Lernschritte absolviert wurden trainiert.
Nach jedem Aufruf wird ein Bericht ausgegeben.
- Parameters:
pNet
- Das Netz, welches zu testen ist.pAlgo
- Das zu benutzende Lernverfahren.pInputPattern
- Die Eingabemuster für das Training.pOutputPattern
- Die Ausgabemuster für das Training (Soll-Werte).pRoundsToTest
- Anzahl der Testdurchläufe.pMaxCycles
- Anzahl der maximalen Lernschritte pro Testdurchlauf.pConnectorParameters
- Parameter für den INetConnector.pNetConnectionAlgo
- Der Kantengewichtsinitialisierungsalgorithmus.
- Throws:
PatternDoesNotMatchNetException
- Falls eines der gegebenen Lerndatensätze
nicht der Eingabe-/ Ausgabeschichtgröße des Netzes entspricht.
getNetPerformance
public static java.lang.String getNetPerformance(NetPerformanceStatistics pNetStat,
int pLearningCycle)
- Generiert einen Bericht über die Performanz eines Netzes.
Der Bericht zeigt die durchschnittlichen Fehlerwerte auf den
Lerndatensätzen sowie den absoluten Fehler für jedes Ausgabeneuron (Ist-Wert)
zu den Ausgabemustern (Soll-Wert).
Die erste Zeile des Berichtes enthält Informationen über die durchschnittliche
Performaz des Netzes auf allen Lernverfahren:
avg.ABSE:0.03 / avg.SSE:0 / avg.RMSE:0.01 / max. Neuron AbsE:0.03 @[Lernschritt]
Für jeden Lerndatensatz wird im Bericht eine eigene Zeile produziert.
Das Muster für jede Zeile hat die Form:
Pattern [pattern number]
[output pattern value]=[netoutput] AbsE:[absolute neuron error]
Der Auszug unten ist ein Bericht über ein Netz mit drei Ausgabeneuronen,
welches mit 16 Lerndatensätzen trainiert wurde.
avg.ABSE:0.03 / avg.SSE:0 / avg.RMSE:0.01 / max. Neuron AbsE:0.03 @377
Pattern 0
0.6=0.61 (AbsE:0.01) 0.1=0.08 (AbsE:0.02) 0.2=0.2 (AbsE:0)
Pattern 1
0.7=0.69 (AbsE:0.01) 0.1=0.11 (AbsE:0.01) 0.2=0.2 (AbsE:0)
Pattern 2
0.1=0.11 (AbsE:0.01) 0.2=0.18 (AbsE:0.02) 0.2=0.19 (AbsE:0.01)
Pattern 3
0.1=0.1 (AbsE:0) 0.2=0.19 (AbsE:0.01) 0.2=0.19 (AbsE:0.01)
Pattern 4
0.7=0.67 (AbsE:0.03) 0.1=0.09 (AbsE:0.01) 0.2=0.2 (AbsE:0)
Pattern 5
0.6=0.61 (AbsE:0.01) 0.1=0.1 (AbsE:0) 0.2=0.2 (AbsE:0)
Pattern 6
0.5=0.49 (AbsE:0.01) 0.1=0.09 (AbsE:0.01) 0.2=0.19 (AbsE:0.01)
Pattern 7
0.4=0.4 (AbsE:0) 0.1=0.11 (AbsE:0.01) 0.2=0.22 (AbsE:0.02)
Pattern 8
0.3=0.27 (AbsE:0.03) 0.1=0.12 (AbsE:0.02) 0.2=0.21 (AbsE:0.01)
Pattern 9
0.2=0.21 (AbsE:0.01) 0.1=0.09 (AbsE:0.01) 0.2=0.21 (AbsE:0.01)
Pattern 10
0.1=0.12 (AbsE:0.02) 0.1=0.12 (AbsE:0.02) 0.2=0.2 (AbsE:0)
Pattern 11
0.1=0.1 (AbsE:0) 0.1=0.1 (AbsE:0) 0.2=0.2 (AbsE:0)
Pattern 12
0.2=0.2 (AbsE:0) 0.1=0.09 (AbsE:0.01) 0.2=0.2 (AbsE:0)
Pattern 13
0.3=0.3 (AbsE:0) 0.1=0.11 (AbsE:0.01) 0.2=0.21 (AbsE:0.01)
Pattern 14
0.4=0.4 (AbsE:0) 0.1=0.1 (AbsE:0) 0.2=0.19 (AbsE:0.01)
Pattern 15
0.5=0.51 (AbsE:0.01) 0.1=0.1 (AbsE:0) 0.2=0.2 (AbsE:0)
- Parameters:
pNetStat
- Das NetPerformanceStatistics Objekt, zu dem der Bericht erstellt werden soll.pLearningCycle
- Der Lernschritt, zu dem das NetPerformanceStatistics Objekt generiert wurde.
- Returns:
- String, der den Bericht als formatierten Text enthält.